#include<iostream>
#include<semaphore.h>



namespace Semaphore_module
{
    const size_t default_val = 1;
    class Sem
    {
    public:
        Sem(size_t cap = default_val)
        {
           sem_init(&_sem , 0 , cap) ;
        }
        void Wait() { sem_wait(&_sem);}

        void Post() { sem_post(&_sem);}
        ~Sem()
        {
            sem_destroy(&_sem);
        }
    private:
        sem_t _sem;
    };
}